home *** CD-ROM | disk | FTP | other *** search
/ Acorn RISC PD-CD 1 / Acorn RISC PD-CD 1.iso / languages / c / _desklibsm / h / linklist < prev    next >
Encoding:
Text File  |  1993-05-26  |  1.4 KB  |  38 lines

  1.  
  2. #ifndef __dl_linklist_h
  3. #define __dl_linklist_h
  4. #ifndef __dl_core_h
  5. #include "Core.h"
  6. #endif
  7. typedef struct linklist_header
  8. {
  9.   struct linklist_header *next;
  10.   struct linklist_header *previous;
  11. } linklist_header;
  12. extern void LinkList_AddToHead(linklist_header *anchor, linklist_header *item);
  13. extern void LinkList_AddToTail(linklist_header *anchor, linklist_header *item);
  14. extern void LinkList_InsertBefore(linklist_header *anchor,
  15.                                   linklist_header *pos,
  16.                                   linklist_header *item);
  17. extern void LinkList_InsertAfter(linklist_header *anchor,
  18.                                  linklist_header *pos,
  19.                                  linklist_header *item);
  20. extern BOOL LinkList_InList(linklist_header *anchor, linklist_header *item);
  21. extern BOOL LinkList_ListLength(linklist_header *anchor);
  22. extern void LinkList_Unlink(linklist_header *anchor, linklist_header *item);
  23. #define LinkList_FirstItem(x) ((void *)(x)->next)
  24. #define LinkList_LastItem(x) ((void *)(x)->previous)
  25. #define LinkList_Init(x)  \
  26.   {                       \
  27.     (x)->next = NULL;     \
  28.     (x)->previous = NULL; \
  29.   }
  30. #define LinkList_InitItem(x) \
  31.   {                          \
  32.     (x)->next = NULL;        \
  33.     (x)->previous = NULL;    \
  34.   }
  35. #define LinkList_NextItem(x) ((void *) ((linklist_header *)(x))->next)
  36. #define LinkList_PreviousItem(x) ((void *) ((linklist_header *)(x))->previous)
  37. #endif
  38.